package bitArithmetic;


//1720. 解码异或后的数组
//这道题是道考察基础的题目。
//
//        我们先从位的角度考虑，异或运算只会影响对应的位，不同的位之间不产生影响。那么如果X是未知数，Y是已知的，Z是表示X和Y是相同的还是不同的，这种情况下，我们是不是一下子就知道X是什么了呢？（因为一个位不是0就是1，如果X和Y相同，那不用说，X的值就是Y；如果X和Y不同，那Y如果是0，X就是1，反之如果Y是1，X就是0）
//        异或的一个特性是，X和Y异或得到结果Z，那么知道其中任意2个数，做异或运算就可以得到剩下的那个数。

public class basic1720 {
    public int[] decode(int[] encoded, int first) {
        int length = encoded.length;

        int[] initialArr = new int[length + 1];
        initialArr[0]=first;
        for (int i = 0; i < length; i++) {
            initialArr[i+1]=initialArr[i]^encoded[i];
        }


        return  initialArr;



    }
    public static void main(String[] args) {
        basic1720 basic1720 = new basic1720();
        int[] decode = basic1720.decode(new int[]{1, 2, 3}, 1);
        for (int a:decode
             ) {
            System.out.println(a);

        }
    }


}
